<template>
  <router-view />
</template>

<script setup>
// 使用路由视图代替直接引入组件
import { onMounted, onUnmounted } from 'vue';
import { useRouter } from 'vue-router';
import { isTokenExpired } from '../../utils/authTokenService';

const router = useRouter();
let tokenCheckInterval = null;

// 检查token是否过期的函数
const checkTokenExpiration = () => {
  const userInfoStr = localStorage.getItem('userInfo');
  if (!userInfoStr) return;
  
  try {
    const userInfo = JSON.parse(userInfoStr);
    if (userInfo && userInfo.expire_time) {
      // 使用authTokenService中的isTokenExpired函数检查
      if (isTokenExpired(userInfo.expire_time)) {
        // token已过期，清除本地存储并重定向到登录页
        localStorage.removeItem('token');
        localStorage.removeItem('userInfo');
        localStorage.removeItem('isAuthorized');
        router.push({ path: '/login', query: { expired: 'true' } });
      }
    }
  } catch (error) {
    console.error('解析用户信息失败:', error);
  }
};

// 组件挂载时设置定时器，每分钟检查一次token是否过期
onMounted(() => {
  // 立即检查一次
  checkTokenExpiration();
  
  // 设置定时器，每分钟检查一次
  tokenCheckInterval = setInterval(checkTokenExpiration, 60000);
});

// 组件卸载时清除定时器
onUnmounted(() => {
  if (tokenCheckInterval) {
    clearInterval(tokenCheckInterval);
    tokenCheckInterval = null;
  }
});
</script>

<style>
/* 全局样式 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
</style>
